﻿@{
    ViewBag.Title = "EditUser";
}
@functions
{

    string IsMandatory(bool mand)
    {
        if (mand) return "required";
        else return "";
    }

    /*string IsradioButtonSelected(string value, bool opt)
    {
        if (opt == true)
        {
            if (value == "true" || value == "True" || value == "1") return "true";
            else return "false";
        }
        else
        {
            if (value == "true" || value == "True" || value == "1") return "false";
            else return "true";
        }
    }*/

}

<script src="/Scripts/User.js"></script>
@using System.Diagnostics.Eventing.Reader
@using wne.models
@model wne.models.UserModel


@using (Html.BeginForm("EditUser", "Admin", FormMethod.Post, new { id = "EditUserForm", onsubmit = "EditUserSubmit();" }))
{
    <input type="hidden" name="Action" id="UserModelAction" value="" />
    @Html.HiddenFor(m => m.Id, "UserId");
    @Html.HiddenFor(m => m.UserName, "UserName");
    
    <div class="hero-unit row" style="padding: 10px 0px 10px 30px; margin: 10px 0px 10px 0px">
        <h3>Редактирование пользователя</h3>
        <p>Пользователь принадлежит группам:</p>
        @if (Model.UserGroups != null)
        {
            foreach (var q in Model.UserGroups)
            {
                <p>
                    <code class="lead" style="color:black">@q.Name</code>
                 </p>
            }
        }
        <h6><a href="/Admin/EditUserEditGroup?id=@Model.Id">Редактировать группы пользователя</a></h6>
    </div>
    
    
    
    <table class="table table-bordered">
        <style>
            th {
                background: #4F4F4F; /* Цвет фона */
                color: #fff; /* Цвет текста */
            }

            tbody tr:hover {
                background: #DCDCDC; /* Цвет фона при наведении */ /* color: #fff;  Цвет текста при наведении */
            }
        </style>
        <tr>
            <th>Название поля</th>
            <th>Формат ввода</th>
            <th>Тип вводимых данных</th>
            <th>Данные</th>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.UserName, "Логин")</td>
            <td>Текстовый</td>
            <td>Текстовый</td>
            <td>@Html.TextBoxFor(m => m.UserName, new { disabled = "disabled" })<br /><h6></h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.Surname, "Фамилия")</td>
            <td>Текстовый</td>
            <td>Текстовый</td>
            <td>@Html.TextBoxFor(m => m.Surname, new { required = "required", pattern = "[A-Za-zА-Яа-яЁё0-9_\\s]{1,}" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.FirstName, "Имя")</td>
            <td>Текстовый</td>
            <td>Текстовый</td>
            <td>@Html.TextBoxFor(m => m.FirstName, new { required = "required", pattern = "[A-Za-zА-Яа-яЁё0-9_\\s]{1,}" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.SecondName, "Отчество")</td>
            <td>Текстовый</td>
            <td>Текстовый</td>
            <td>@Html.TextBoxFor(m => m.SecondName, new { required = "required", pattern = "[A-Za-zА-Яа-яЁё0-9_\\s]{1,}" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.UserEmail, "email")</td>
            <td>email</td>
            <td>Текстовый</td>
            <td>@Html.TextBoxFor(m => m.UserEmail, new { required = "required", type = "email" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.Phone, "Телефон")</td>
            <td>Телефон</td>
            <td>Числовой</td>
            <td>@Html.TextBoxFor(m => m.Phone, new { required = "required", type = "tel" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.UserBd, "Дата рождения")</td>
            <td>дд.мм.гггг</td>
            <td>Дата</td>
            <td>@Html.TextBoxFor(m => m.UserBd, new { required = "required",
               pattern=@"([0-2]\d|3[01])\.(0\d|1[012])\.(\d{4})" })<br /><h6>(Поле должно быть заполнено)</h6></td>
        </tr>
    </table>
    
    <hr style="margin: 30px 0 30px 0"/>
    
        for (int i = 0; i < Model.UserGroups.Count; i++)
        {
        @Html.HiddenFor(m => m.UserGroups[i].Id)
        @Html.HiddenFor(m => m.UserGroups[i].Name)
        <h4>Группа: @Model.UserGroups[i].Name</h4>
        <table class="table table-bordered">
            <style>
                th {
                    background: #4F4F4F; /* Цвет фона */
                    color: #fff; /* Цвет текста */
                }

                tbody tr:hover {
                    background: #DCDCDC; /* Цвет фона при наведении */ /* color: #fff;  Цвет текста при наведении */
                }
            </style>
            <tr>
                <th>Название поля</th>
                <th>Формат ввода</th>
                <th>Тип вводимых данных</th>
                <th>Данные</th>
            </tr>

        @for (int j = 0; j < Model.UserGroups[i].Fields.Count; j++)
        {
            var q = Model.UserGroups[i].Fields[j];
                @Html.HiddenFor(m => m.UserGroups[i].Fields[j].Name)
                @Html.HiddenFor(m => m.UserGroups[i].Fields[j].FieldId)
            
            <tr>
                @if (@q.Type == FieldTypeEnum.String)
                { 
                        <td>@Html.LabelFor(m => q.Value, @q.Name)</td>
                        <td>@q.Type</td>
                        <td>@q.Type</td>
                        <td>@Html.TextBoxFor(m => m.UserGroups[i].Fields[j].Value, new { pattern = "[A-Za-zА-Яа-яЁё0-9\\s]{1,}", required = @IsMandatory(q.Mandatory) }) </td>
                }
                @if (@q.Type == FieldTypeEnum.Numeric)
                { 
                    <td>@Html.LabelFor(m => q.Value, @q.Name)</td>
                    <td>@q.Type</td>
                    <td>@q.Type</td>
                    <td>@Html.TextBoxFor(m => m.UserGroups[i].Fields[j].Value, new { required = @IsMandatory(q.Mandatory), type = "number" }) </td>
                }
                @if (@q.Type == FieldTypeEnum.Date)
                { 
                    <td>@Html.LabelFor(m => q.Value, @q.Name)</td>
                    <td>@q.Type</td>
                    <td>@q.Type</td>
                    <td>@Html.TextBoxFor(m => m.UserGroups[i].Fields[j].Value, new { required = @IsMandatory(q.Mandatory), 
               pattern=@"([0-2]\d|3[01])\.(0\d|1[012])\.(\d{4})" })<br /><h6>(Поле должно быть заполнено)</h6></td>
                }   
                @if (@q.Type == FieldTypeEnum.Bool)
                { 
                    <td>@Html.LabelFor(m => q.Value, @q.Name)</td>
                    <td>@q.Type</td>
                    <td>@q.Type</td>
                    <td>@*@Html.TextBoxFor(m => q.Value, new {required = @IsMandatory(q.Mandatory), type = "date" }) *@
                        @Html.RadioButtonFor(m => m.UserGroups[i].Fields[j].Value, true) True
                        @Html.RadioButtonFor(m => m.UserGroups[i].Fields[j].Value, false) False
                    </td>
                }
                @if (@q.Type == FieldTypeEnum.OneOf)
                { 
                    <td>@Html.LabelFor(m => q.Value, @q.Name)</td>
                    <td>@q.Type</td>
                    <td>@q.Type</td>
                    <td>
                        @Html.DropDownListFor(m => m.UserGroups[i].Fields[j].Value, new SelectList(q.AvaliableValues, "Key", "Value"), new { @class="select_one_of", required = @IsMandatory(q.Mandatory) })
                        <input type="hidden" value="@q.Value" />
                    </td>
                    <script>
                        $(function() {
                            $("select#UserGroups_"+@i+"__Fields_"+@j+"__Value :contains('@q.Value')").attr("selected", "selected");
                        });
                    </script>      
                }
                @if (@q.Type == FieldTypeEnum.ManyOf)
                { 
                    <td>@Html.LabelFor(m => q.SelectedValues, @q.Name)</td>
                    <td>@q.Type</td>
                    <td>@q.Type</td>
                    <td>@Html.ListBoxFor(m => m.UserGroups[i].Fields[j].SelectedValues, new SelectList(q.AvaliableValues, "Key", "Value"))</td>
                }
            </tr>   
        }
        </table>
                                                }  
    
    
    <button type="submit" class="btn btn-primary">Сохранить</button>
    <button type="button" class="btn" onclick="location.href = '/Admin/AllUsersPage'">Отменить</button>
}